﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Chillis.CRM.TransferObjects;
using System.Data.SqlClient;
using System.Data;

namespace Chillis.CRM.Data
{

    #region DAO

    public interface IDAOPublicacion
    {
        IList<TipoPublicacion> ListarTipoPublicacion();

        TipoPublicacion ObtenerTipoPublicacion(int idTipoPublicacion);

        int ActualizarTipoPublicacion(TipoPublicacion tipoPublicacion);

        int RegistrarTipoPublicacion(TipoPublicacion tipoPublicacion);

        int EliminarTipoPublicacion(int idTipoPublicacion);
    }

    #endregion

    public class DTipoPublicacion : Conexion, IDAOPublicacion
    {
        static DTipoPublicacion()
        {
        }
        private DTipoPublicacion()
        {
        }

        private static DTipoPublicacion _instancia = new DTipoPublicacion();
        public static DTipoPublicacion Instancia
        {
            get { return _instancia; }
        }

        #region Helper Tipo Publicacion

        private TipoPublicacion CreaTipoPublicacion(DataRow fila)
        {
            var publicacion = new TipoPublicacion();

            publicacion.IdTipoPublicacion = fila.Field<int>("IdTipoPublicacion");
            publicacion.Descripcion = fila.Field<string>("Descripcion");


            return publicacion;
        }

        private IList<TipoPublicacion> CreaTipoPublicacion(DataTable tabla)
        {
            var lista = new List<TipoPublicacion>();

            foreach (DataRow fila in tabla.Rows)
            {
                lista.Add(CreaTipoPublicacion(fila));
            }

            return lista;
        }

        #endregion

        public IList<TipoPublicacion> ListarTipoPublicacion()
        {

            string qry = "usp_ListarTipoPublicacion";

            var db = CrearBaseDatos();
            var ds = db.ExecuteDataSet(qry);


            return CreaTipoPublicacion(ds.Tables[0]);

        }

        public TipoPublicacion ObtenerTipoPublicacion(int idTipoPublicacion)
        {

            string qry = "usp_ObtenerTipoPublicacion";

            var db = CrearBaseDatos();
            var ds = db.ExecuteDataSet(qry, idTipoPublicacion);


            return CreaTipoPublicacion(ds.Tables[0].Rows[0]);

        }

        public int ActualizarTipoPublicacion(TipoPublicacion tipoPublicacion)
        {
            string qry = "usp_ActualizarTipoPublicacion";

            var db = CrearBaseDatos();
            var objeto = db.ExecuteNonQuery(qry,
                tipoPublicacion.IdTipoPublicacion,
                tipoPublicacion.Descripcion
                );

            return (int)objeto;
        }

        public int RegistrarTipoPublicacion(TipoPublicacion tipoPublicacion)
        {
            string qry = "usp_RegistrarTipoPublicacion";

            var db = CrearBaseDatos();
            var objeto = db.ExecuteNonQuery(qry,
                tipoPublicacion.Descripcion
                );

            return (int)objeto;
        }

        public int EliminarTipoPublicacion(int idTipoPublicacion)
        {
            string qry = "usp_EliminarTipoPublicacion";

            var db = CrearBaseDatos();
            var objeto = db.ExecuteNonQuery(qry,
                idTipoPublicacion
                );

            return (int)objeto;
        }


    }










    /*
    public class DClaseComentario : Conexion
    {
        static DClaseComentario()
        {
        }
        private DClaseComentario()
        {
        }

        private static DClaseComentario _instancia = new DClaseComentario();
        public static DClaseComentario Instancia
        {
            get { return _instancia; }
        }

        #region Helper ClaseComentario

        private ClaseComentario CreaClaseComentario(DataRow fila)
        {
            var publicacion = new ClaseComentario();

            publicacion.IdClaseComentario = fila.Field<int>("IdClaseComentario");
            publicacion.Descripcion = fila.Field<string>("Descripcion");


            return publicacion;
        }

        private IList<ClaseComentario> CreaClaseComentario(DataTable tabla)
        {
            var lista = new List<ClaseComentario>();

            foreach (DataRow fila in tabla.Rows)
            {
                lista.Add(CreaClaseComentario(fila));
            }

            return lista;
        }

        #endregion

        public IList<ClaseComentario> ObtenerClaseComentario()
        {

            string qry = "usp_ObtenerClaseComentario";

            var db = CrearBaseDatos();
            var ds = db.ExecuteDataSet(qry);


            return CreaClaseComentario(ds.Tables[0]);

        }


    }







    
    public class DTipoComentario : Conexion
    {
        static DTipoComentario()
        {
        }
        private DTipoComentario()
        {
        }

        private static DTipoComentario _instancia = new DTipoComentario();
        public static DTipoComentario Instancia
        {
            get { return _instancia; }
        }

        #region Helper TipoComentario

        private TipoComentario CreaTipoComentario(DataRow fila)
        {
            var publicacion = new TipoComentario();

            publicacion.IdTipoComentario = fila.Field<int>("IdTipoComentario");
            publicacion.Descripcion = fila.Field<string>("Descripcion");


            return publicacion;
        }

        private IList<TipoComentario> CreaTipoComentario(DataTable tabla)
        {
            var lista = new List<TipoComentario>();

            foreach (DataRow fila in tabla.Rows)
            {
                lista.Add(CreaTipoComentario(fila));
            }

            return lista;
        }

        #endregion

        public IList<TipoComentario> ObtenerTipoComentario()
        {

            string qry = "usp_ObtenerTipoComentario";

            var db = CrearBaseDatos();
            var ds = db.ExecuteDataSet(qry);


            return CreaTipoComentario(ds.Tables[0]);

        }


    }
    */



}
